

#include <stdio.h>  // 标准输入输出
#include <unistd.h> // POSIX标准接口

#include "ohos_init.h" // 用于初始化服务(services)和功能(features)
#include "cmsis_os2.h" // CMSIS-RTOS API V2

#include "hi_gpio.h"
#include "hi_io.h" // 海思 Pegasus SDK：IoT硬件设备操作接口-IO
#include "hi_adc.h"

#include "mqtt_light_constant.h" // 用来存放业务相关常量的代码

// 定义GPIO引脚，尽量避免直接用数值
#define MQ3_ADC HI_GPIO_IDX_5  // ADC
#define MQ3_DATA HI_GPIO_IDX_0 // DATA

/// 初始化三色灯设备
void InitMQ3(void)
{

    printf("init mq3 sensor GPIO\n");
    hi_gpio_init();
    //  初始化 MQ3_ADC 口为输入信号
    hi_io_set_func(HI_IO_NAME_GPIO_5, HI_IO_FUNC_GPIO_5_GPIO);
    hi_gpio_set_dir(MQ3_ADC, HI_GPIO_DIR_IN);

    // 初始化 MQ3_DATA 为输入数据
    hi_io_set_func(HI_IO_NAME_GPIO_0, HI_IO_FUNC_GPIO_0_GPIO);
    hi_gpio_set_dir(MQ3_DATA, HI_GPIO_DIR_IN);
    // hi_io_set_pull(MQ3_DATA, HI_IO_PULL_UP); //设置为上拉模式（引脚上拉）


    
    // IoTGpioInit(BUTTON_GPIO);
    // hi_io_set_func(BUTTON_GPIO, HI_IO_FUNC_GPIO_5_GPIO);
    // IoTGpioSetDir(BUTTON_GPIO, IOT_GPIO_DIR_IN);
}

// 获取MQ3传感器的Ao信号
hi_u16 GetMQ3AOut()
{
    hi_u16 value = 0;
    if (hi_adc_read(HI_ADC_CHANNEL_2, &value, HI_ADC_EQU_MODEL_2, HI_ADC_CUR_BAIS_DEFAULT, 0) != HI_ERR_SUCCESS)
    {
        printf("MQ3 Ao read error!\n");
    }
    else
    {
        printf("MQ3_Ao_VALUE = %u\n", (unsigned int)value);
    }
    return value;
}

// 获取MQ3传感器的Do信号
hi_u32 GetMQ3DOut()
{
    hi_gpio_value val;
    hi_gpio_get_input_val(MQ3_DATA, &val);
        // IoTGpioGetInputVal(BUTTON_GPIO, &value);
    printf("MQ3_Do_VALUE = %u\n", (unsigned int)val);
    return val;
}
